package com.yun.zf.common.admin.domain;

import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.yun.zf.common.vo.BaseEntity;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;

import javax.validation.constraints.Email;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;

/**
 * 部门表 sys_dept
 * 
 * 部门表，这里可称为门店表 ，所有公司分为三级管理，一级为总公司，二级为分公司，3级为门店，如果没有分公司的，则总公司与公公司一样只是加了一个城市区别如：
 * 测试公司-》武汉测试公司-》武丰门店
 */

@TableName("sys_dept")
@Data
public class SysDept
{
    private static final long serialVersionUID = 1L;

    /** 部门ID */
    @ApiModelProperty(value = "部门ID")
    private Long deptId;

    /** 父部门ID */
    @ApiModelProperty(value = "父部门ID")
    private Long parentId;


    /** 部门名称 */
    @ApiModelProperty(value = "部门名称")
    private String deptName;

    /** 显示顺序 */
    @ApiModelProperty(value = "显示顺序")
    private int  orderNum;

    /** 负责人 */
    @ApiModelProperty(value = "负责人")
    private String leader;

    /** 联系电话 */
    @ApiModelProperty(value = "联系电话")
    private String phone;

    /** 邮箱 */
    @ApiModelProperty(value = "邮箱")
    private String email;

    /** 部门状态:0正常,1停用 */
    @ApiModelProperty(value = "部门状态")
    private int status;


    private String createBy;
    /** 创建时间 */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date createTime;
    /** 更新者 */
    private String updateBy;

    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date updateTime=new Date();

    private int level;
    /** 子部门 */
    @TableField(exist = false)
    private List<SysDept> children = new ArrayList<>();
    @ApiModelProperty(value = "父级部门名称")
    private String parentName;

    private  Long cityCode; // 市级区划代码
    private Long provinceCode; // 省级区划代码

    @ApiModelProperty(value = "省级名称")
    private String provinceName;
    @ApiModelProperty(value = "城市名称")
    private String cityName;

    // 这里给前端显示下拉是否呈现二级部门三角按钮使用
    public List<SysDept> getChildren() {
        if (level==2){
            return null;
        }
        return children;
    }
}
